home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
Z-Misc Series
/
(k)zi.d64
/
txt.small recs
< prev
next >
Wrap
Text File
|
2007-03-01
|
3KB
|
132 lines
╙═┴╠╠ ╙╘╥╔╬╟╙ ╔╬ ╙═┴╠╠ ╥┼├╧╥─╙
BY ─ICK ╦LINGENS
─UTCH ├╧═┴╠ ╒SERS ╟ROUP
╘HE STATEMENT
╨╥╔╬╘ ╞╔╠┼ 1: X$
WRITES ╪$ INTO THE FILE AND ADDS A
DELIMETER.
╘HE STATEMENT
╫╥╔╘┼ ╞╔╠┼ 1: X$
WRITES ╪$ INTO THE FILE AND ADDS TWO
CHARACTERS FOR THE LENGTH OF THE
STRING.
╘HESE FACTS CAN MEAN A LOSS OF DISK
SPACE, FOR EXAMPLE IF ONE WANTS TO
WRITE 100+ SMALL STRINGS INTO A
╥┴╬─╧═ FILE, USING ONE RECORD FOR
EACH STRING.
┘OU CAN AVOID THIS BY USING THE
LENGTH OF THE LONGEST STRING AS
RECORD LENGTH.
╞IRST READ ALL THE STRINGS AND
COMPUTE THE MAXIMUM LENGTH OF THE
STRINGS, THEN WRITE EACH STRING INTO
THE FILE WITH
╨╥╔╬╘ ╞╔╠┼ FNUM,RECNUM: X$,
╘HE COMMA PREVENTS THE SYSTEM FROM
WRITING A DELIMITER INTO THE FILE.
SCAN'WORD'LENGTH
WORDS'INTO'FILE
//
╨╥╧├ SCAN'WORD'LENGTH
MAX'LENGTH:=0
NUM:=0
╫╚╔╠┼ ╬╧╘ ┼╧─ ─╧
╥┼┴─ WORD$
╔╞ ╠┼╬(WORD$)>MAX'LENGTH ╘╚┼╬ MAX'
LENGTH:=╠┼╬(WORD$) // WRAP
┼╬─╫╚╔╠┼
┼╬─╨╥╧├
//
╨╥╧├ WORDS'INTO'FILE
╥┼╙╘╧╥┼
╧╨┼╬ ╞╔╠┼ 1,"DEMO",╥┴╬─╧═ MAX'LENGTH
// USE FIRST RECORD FOR
// NUMBER OF RECORDS
╨╥╔╬╘ ╞╔╠┼ 1,1: ╙╘╥$(NUM),
╞╧╥ T:=1 ╘╧ NUM ─╧
╥┼┴─ WORD$
╨╥╔╬╘ ╞╔╠┼ 1,T+1: WORD$,
┼╬─╞╧╥ T
├╠╧╙┼ ╞╔╠┼ 1
┼╬─╨╥╧├ WORDS'INTO'FILE
//
─┴╘┴ "ABS","AND",...
─┴╘┴ ...
╬OW ╔╬╨╒╘ ╞╔╠┼ CANNOT BE USED TO READ
THE WORDS FROM THE FILE BECAUSE THE
DELIMETER IS MISSING.
╔ DEVELOPED A 2.0 FUNCTION TO DO
THIS:
╞╒╬├ GETRAN$(F#,REC,POS,NUM)
WHERE
F# - FILE NUMBER IN ╧╨┼╬ STATEMENT
REC - RECORD NUMBER
POS - START POSITION IN RECORD
NUM - NUMBER OF CHARS TO READ
╘HE FUNCTION FIRST CONTROLS IF THE
FILE IS OPEN AND COMPUTES THE SYSTEM
FILE ╔╬─┼╪ (FROM MEMORY LOCATION
600). ╔F NOT, AN ERROR MESSAGE
FOLLOWS. ╘HEN THE ├╚┴╬╬┼╠ IS COMPUTED
(FROM LOCATION 620), BEING THE
SECUNDARY ADDRESS USED IN THE ╨┴╙╙
STATEMENT.
╞INALLY THE NUMBER OF WANTED
CHARACTERS ARE ╥┼╘╒╥╬ED:
╞╒╬├ GETRAN$(F#,REC,POS,NUM) ├╠╧╙┼─
─╔═ COMMAND$ ╧╞ 5
LOREC:=REC ═╧─ 256
HIREC:=REC ─╔╓ 256
INDEX:=1: FND:=╞┴╠╙┼
╫╚╔╠┼ ╬╧╘ FND ┴╬─ INDEX<=F# ─╧
╔╞ ╨┼┼╦(600+INDEX)=F# ╘╚┼╬
FND:=╘╥╒┼
┼╠╙┼
INDEX:+1
┼╬─╔╞
┼╬─╫╚╔╠┼
╔╞ ╬╧╘ FND ╘╚┼╬
╥┼╨╧╥╘ 203 // FILE NOT FOUND
┼╬─╔╞
CHANNEL:=╨┼┼╦(620+INDEX)
COMMAND$:="P"+├╚╥$(CHANNEL-$60)
COMMAND$:+├╚╥$(LOREC)+├╚╥$(HIREC)
COMMAND$:+├╚╥$(POS)
╨┴╙╙ COMMAND$ // SET POINTER
╥┼╘╒╥╬ ╟┼╘$(F#,NUM)
┼╬─╞╒╬├ GETRAN
╧N THIS DISK IS A DEMO PROGRAM WHICH
PERFORMS RANDOM READING FROM A RANDOM
FILE CONTAINING ├╧═┴╠ KEYWORDS (NOT
ALL), EACH IN ONE RECORD.
┬Y CHANGING THE ABOVE PROCEDURE
WORDS'INTO'FILE IT IS POSSIBLE TO PUT
MORE THEN ONE STRING INTO A RECORD.
╔N THIS CASE SPACES AT THE END OF A
STRING CAN BE USED TO GIVE ALL THE
STRINGS A FIXED LENGTH.